Functor theory